// 引入封装头信息和请求域名的axios对象
import http from './http'
// 引入请求的url地址
import {
  // 正在热映列表请求uri地址
  filmListUri,
  comingsoonListUri,
  detailUri,
  cinemaUri,
  cityUri
} from '../config/uri'


/**
 * 获取正在热映列表分页数据
 * @param {int} page 页码数 默认1 
 * @returns promise对象
 */
export const filmListData = (page = 1) => {
  return http.get(filmListUri + page)
}

// 自已写一下缓存类 
/**
 * 获取即将上映列表分页数据
 * @param {int} page 页码数 默认1 
 * @returns promise对象
 */
export const comingsoonListData = async (page = 1) => {
  let ret = {}
  let res = !localStorage.getItem('comingsoon') ? {} : JSON.parse(localStorage.getItem('comingsoon'))
  if (res.data) { // 存在
    ret = JSON.parse(localStorage.getItem('comingsoon'))
  } else { // 不存在
    ret = await http.get(comingsoonListUri + page)
    localStorage.setItem('comingsoon', JSON.stringify(ret))
  }
  return Promise.resolve(ret)
}

/**
 * 获取影片详情信息
 * @param {int} page 页码数 默认1 
 * @returns promise对象
 */
export const detailData = (id = 1) => {
  return http.get(detailUri + id, {
    headers: {
      // 由于请求头信息中不同的需求有点的请求头，所以要判断所用的条件 
      'info': 'info'
    }
  })
}


/**
 * 获取影院列表
 * @param {int} page 页码数 默认1 
 * @returns promise对象
 */
export const cinemaData = () => {
  return http.get(cinemaUri, {
    headers: {
      // 由于请求头信息中不同的需求有点的请求头，所以要判断所用的条件 
      'info': 'cinema'
    }
  })
}

/**
 * 获取城市列表
 * @param {int} page 页码数 默认1 
 * @returns promise对象
 */
export const cityData = async () => {

  // 判断本地是否有缓存，如果有则不请求远程数据
  let cacheData = !localStorage.getItem('cityData') ? [] : JSON.parse(localStorage.getItem('cityData'))

  if (cacheData.length > 0) {
    return Promise.resolve(cacheData)
  }

  let ret = await http.get(cityUri, {
    headers: {
      // 由于请求头信息中不同的需求有点的请求头，所以要判断所用的条件 
      'info': 'city'
    }
  })
  let retData = ret.data.data.cities

  /* [
    {
      index:A,
      data:[
        {id:,name:}
      ]
    },
    {
      index:B,
      data:[
        {id,name}
      ]
    }
  ] */
  // 城市字母索引
  let cityIndex = []
  // 处理完成后的数据
  let dataList = []
  let indexList = []

  for (let i = 65; i <= 90; i++) {
    cityIndex.push(String.fromCharCode(i))
  }

  cityIndex.forEach(index => { // 大写
    // let tmpArr = retData.filter(item => new RegExp(index, 'i').test(item.pinyin))
    let tmpArr = retData.filter(item => index.toLowerCase() == item.pinyin.substr(0, 1))
    if (tmpArr.length > 0) {
      indexList.push(index)
      dataList.push({
        index,
        data: tmpArr
      })
    }
  })

  let data = [dataList, indexList]
  localStorage.setItem('cityData', JSON.stringify(data))

  return Promise.resolve([dataList, indexList])
}